/*
  Object新增API
    Object.is
      用于判断两个数据是否相等，基本上更严格相等（===）是一致的，除了以下两点
        1. NaN和NaN相等
        2. +0和-0不相等（符号位不同）

    Object.assign
      用于对象混合, 会将第一个参数修改并返回混合的对象，
      
      解决方法：
        1.使用...对象展开
        2.第一个参数使用 {}

    Object.getOwnPropertyNames 的枚举顺序
      Object.getOwnPropertyNames方法之前就存在，只不过，官方没有明确要求，对属性的顺序如何排序，如果排序完全由浏览器厂商决定
        - 所有数字键按升序排序。
        - 所有字符键按照它们被加入对象的顺序排序。
        - 所有`Symbol`键按照它们被加入对象的顺序排序。

    Object.setPrototypeOf
      该函数用于设置某个对象的隐式原型

      比如：Object.setPrototypeOf(obj1, obj2)
      相当于： obj1.__proto__ = obj2
*/

// Object.is
/* console.log(+0 === -0); // true
console.log(NaN === NaN); // false
console.log(Object.is(+0, -0), Object.is(NaN, NaN)); */

// Object.assign
/* console.log(
  Object.assign({ a: 123, b: 234 }, { b: 123, c: 123 }),
  Object.assign({}, { a: 123, b: 234 }, { b: 123, c: 123 })
);
 */

// Object.getOwnPropertyNames
/* const obj = {
  d: 1,
  b: 2,
  a: 3,
  5: 3,
  1: 2,
};
console.log(Object.getOwnPropertyNames(obj)); */

const obj1 = {
  a: 1,
};

const obj2 = {
  b: 2,
};
Object.setPrototypeOf(obj1, obj2);
console.log(obj1);
